The present invention relates to techniques for imposing modulation constraints on data using short block encoders, and more particularly, to techniques for imposing modulation constraints on a subset of bits in each data block using a short block encoder prior to imposing modulation constraints on the even and odd interleaves.
A disk drive can write data bits onto a data storage disk such as a magnetic hard disk. The disk drive can also read data bits that have been stored on a data disk. Certain sequences of data bits are difficult to write onto a disk and often cause errors during read-back of the data.
Binary sequences are routinely transformed from one representation to another using precoders and inverse precoders, according to well known techniques. In describing this invention all binary sequences are represented as PR4 sequences that can be transformed into an NRZI representation by a precoder that convolves with 1/1+D or into an NRZ representation by a precoder which convolves with 1/(1+D2).
Long sequences of consecutive zeros (e.g., 40 consecutive zeros) are examples of data bit patterns that are prone to errors. A long sequence of zeros in alternating positions (e.g., 0a0b0c0d0 . . . , where a, b, c, d may be 0 or 1) is another example of an error prone data bit pattern.
Therefore, it is desirable to eliminate error prone bit sequences in user input data. Eliminating error prone bit sequences ensures reliable operation of the detector and timing loops in a disk drive system. One way to eliminate error prone bit sequences is to substitute the error prone bit sequences with non-error prone bit patterns that are stored in memory in lookup tables. Lookup tables, however, are undesirable for performing substitutions of very long bit sequences, because they require a large amount of memory.
Many disk drives have a modulation encoder. A modulation encoder uses modulation codes to eliminate sequences of bits that are prone to errors. Fibonacci codes are one example of modulation codes that are used by modulation encoders. Fibonacci codes provide an efficient way to impose modulation code constraints on recorded data to eliminate error prone bit sequences.
A Fibonacci encoder maps an input number to an equivalent number representation in a Fibonacci base. A Fibonacci encoder maps an input vector with K bits to an output vector with N bits. A Fibonacci encoder uses a base with N vectors, which is stored as an N×K binary matrix. Successive application of Euclid's algorithm to the input vector with respect to the stored base gives an encoded vector of length N.
Fibonacci codes are naturally constructed to eliminate long runs of consecutive one digits. This is expressed in the literature as the j constraint, where the parameter j enumerates the longest permitted run of ones. A trivial modification of the Fibonacci code is formed by inverting the encoded sequence. This inverted Fibonacci code eliminates long runs of consecutive zero digits. This constraint is expressed in the literature variously as the k constraint or G constraint, where the parameter k (or G) enumerates the longest permitted run of zeros.
Maximum transition run (MTR) codes are one specific type of modulation codes that are used in conjunction with 1/(1+D) precoders. With respect to MTR codes, a j constraint refers to the maximum number of consecutive ones, a k constraint refers to the maximum number of consecutive zeros, and a t constraint refers to the maximum number of consecutive pairs of the same bits (e.g., aabbccddee . . . ).
Error prone sequences of the form 0a0b0c0d0 as described above are eliminated by the I constraint where the parameter I enumerates the longest run of consecutive zeros in even or odd subsequences. It therefore be desirable to provide modulation encoders extend the Fibonacci codes construction to encompass combined G and I constraints.